Python 性能小测试

测试代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
 import timeit,
sys的时间import getsizeof作为
集合的大小import OrderedDict
日期随机List_Test = list(范围(5000))打印(“列表的大小为:{}”。format(Size(List_Test)))Set_Test = set(范围(5000))打印(“ Set的大小为:{}”。格式(Size(Set_Test)))Tuple_Test = tuple(范围(5000))打印(“ Tuple的大小为:{}”。格式(大小(Tuple_Test))Dict_Test = {k:k,代表范围为(5000)的k}打印(“ Dict的大小为:{}”。格式(大小(Dict_Test)))OrderedDict_Test = OrderedDict({k:k表示)范围(5000)中的k,})打印(“ OrderedDict的大小为:{}”。格式(Size(OrderedDict_Test)))打印(“ \ n现在是测试速度\ n”)time.sleep(1) def创建列表():


















列表= [i代表范围(5000)中的i] def Test_List():randomNumber = random.randint(0,5000)如果List_Test中的randomNumber:返回False def Create_Set():Set = set(i for i在范围(5000)中)def Test_Set():randomNumber = random.randint(0,5000)如果Set_Test中的随机数:返回False def Create_Tuple():元组=元组(i表示范围(5000)中的i) def Test_Tuple():randomNumber = random.randint(0,5000),如果Tuple_Test中的随机数:返回False def Create_Dict():Dict = {k:k表示范围(5000)中的k} def Test_Dict(): randomNumber = rand。(0,5000),如果Dict_Test.keys()中的随机数:




























返回false def Create_OrderedDict():orderedDict = OrderedDict({k:k,表示范围为5000(5000)})def Test_OrderedDict():randomNumber = random.randint(0,5000)如果OrderedDict_Test.keys()中的随机数:返回假t = timeit.repeat(stmt =“ Create_List()”,编号= 50,setup =“ from __main__ import Create_List”,repeat = 15)print(“ Create_List的时间:{}”。格式(sum(t )/ len(t))t = timeit.repeat(stmt =“ Create_Tuple()”,数字= 50,setup =“ from __main__ import Create_Tuple”,重复= 15)print(“ Create_Tuple的时间:{}”。 t)/ len(t))t = timeit.repeat(stmt =“ Create_Set()”,数字= 50,setup =“ from __main__ import Create_Set”,重复= 15)print(“ Create_Set的时间:{}(格式) (sum(t)/ len(t))t = timeit.repeat(stmt =“ Create_Dict()”,数字= 50,setup =“ from __main__ import Create_Dict”,重复= 15)print(“ Cre ate_ Di ct的时间:{}”。格式(sum(t)/ len(t)))

















t = timeit.repeat(stmt =“ Create_OrderedDict()”,数字= 50,设置=“ from __main__ import Create_OrderedDict”,重复= 15)
print(“ Create_OrderedDict的时间:{}”。格式(sum(t)/ len (t))打印(“ \ n”)t = timeit.repeat(stmt =“ Test_List()”,),number = 15,setup =“ from __main__ import Test_List”,重复= 15)print(“ Test_List'时间:({}”。格式(sum(t)/ len(t))t = timeit.repeat(stmt =“ Test_Tuple()”,编号= 15,设置=“ from __main__ import Test_Tuple”,重复= 15)打印(格式(sum(t)/ len(t))t = timeit。重复(stmt =“ Test_Set()”,编号= 15,设置=“来自__main__ import Test_Set”,重复= 15)print(“ Test_Set的时间:{}”。格式(sum(t)/ len(t))t = timeit.repeat(stmt =“ Test_Dict()”,数字= 15,setup =“ from __main__ import Test_Dict”,重复= 15)打印(“ Test_Dict格式(sum(t)/ len)吨)))T = timeit.repeat(语句=“Test_OrderedDict()”,数字= 15,设置=“来自__main__进口Test_OrderedDict”,重复= 15)












打印(“ Test_OrderedDict时间:{}”。格式(sum(t)/ len(t))print(“ \ nThe end”)```结果如下:```列表的大小是:45112集的大小是: 524512元组的大小是:40048字典的大小是:147560分类的字典的大小是:373160现在是测试速度Create_List的时间:0.006335740000000042 0.010433759999999988:Create_Tuple的时间0.013531839999999977:Create_Set的时间0.011174999999999964:Create_Dict的时间0.04272052666666668:Create_OrderedDict的时间0.0003235733333334008:Test_List的时间Test_Tuple的时间:0.00032904666666671765的测试时间:1.814666666666298e-05 Test_Dict时间:1.924666666669831e-05 Test_OrderedDict时间:2.128666666673477e-05完成```内存消耗:`''尺寸:组<列表译通<OrderedDict <设置```创建速度比较:`` 时间的创建:列表<组<快译通<集<OrderedDict```发现速度比较(妈也集合和字典寻找真几把快):

搜索的时间:快译通≈设置≈OrderedDict <<元组≈列表#<<大概快了5K多倍

1
2
3
4
5
6
7
8
9
10
11
12
13


效率最高预算:


~~ 需要索引+需要修改+需要重复元素=列表清单~~ ~~ 需要索引+不需要修改+需要重复元素=元组Tuple ~~ ~~ 不需要索引(与顺序无关)+需要修改+不需要重复=集合Set ~~ ~~ 不需要索引(与顺序无关)+不需要修改+不需要重复=冻结集合frozenSet ~~




个人注释:就速度而言,全都使用字典是最好的(注:在Python3中,字典自带顺序,但不推荐用)。除非是不需要重复的值,就可以使用Set,其他的都别用了,或者不想修改的可以考虑用下冻结集。

另附问题链接:[ https://stackoverflow.com/questions/60744667/speed-test-among-set-list-and-tuple-in-python-gives-surprising-results ](https://stackoverflow.com / questions / 60744667 /在设置列表和元组中的速度测试中,python-gives-surprising-results结果)